# Child Workflows

Child workflows can be spawned from an existing `ctx` object:

```go
childWorkflow, err := ctx.SpawnWorkflow("child-workflow", childInput, &worker.SpawnWorkflowOpts{})

if err != nil {
    return nil, err
}
```

The `SpawnWorkflow` method returns a `ChildWorkflow` object that can be used to wait for the completion of the child workflow:

```go
childResult, err := childWorkflow.Result()

if err != nil {
    return nil, err
}
```

## Spawning ChildWorkflows in Bulk

Child workflows can also be spawned in bulk:

```go
_, err = ctx.SpawnWorkflows(
[]*worker.SpawnWorkflowsOpts{
    {
        WorkflowName: "step-one",

        Sticky: &sticky,
    },
    {
        WorkflowName: "step-one",

        Sticky: &sticky,
    },
})
```
